//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

function write(v) { WScript.Echo(v + ""); }

function foo() {}

write(undefined ^ undefined);
write(undefined ^ null);
write(undefined ^ true);
write(undefined ^ false);
write(undefined ^ Boolean(true));
write(undefined ^ Boolean(false));
write(undefined ^ new Boolean(true));
write(undefined ^ new Boolean(false));
write(undefined ^ NaN);
write(undefined ^ +0);
write(undefined ^ -0);
write(undefined ^ 0);
write(undefined ^ 0.0);
write(undefined ^ -0.0);
write(undefined ^ +0.0);
write(undefined ^ 1);
write(undefined ^ 10);
write(undefined ^ 10.0);
write(undefined ^ 10.1);
write(undefined ^ -1);
write(undefined ^ -10);
write(undefined ^ -10.0);
write(undefined ^ -10.1);
write(undefined ^ Number.MAX_VALUE);
write(undefined ^ Number.MIN_VALUE);
write(undefined ^ Number.NaN);
write(undefined ^ Number.POSITIVE_INFINITY);
write(undefined ^ Number.NEGATIVE_INFINITY);
write(undefined ^ new Number(NaN));
write(undefined ^ new Number(+0));
write(undefined ^ new Number(-0));
write(undefined ^ new Number(0));
write(undefined ^ new Number(0.0));
write(undefined ^ new Number(-0.0));
write(undefined ^ new Number(+0.0));
write(undefined ^ new Number(1));
write(undefined ^ new Number(10));
write(undefined ^ new Number(10.0));
write(undefined ^ new Number(10.1));
write(undefined ^ new Number(-1));
write(undefined ^ new Number(-10));
write(undefined ^ new Number(-10.0));
write(undefined ^ new Number(-10.1));
write(undefined ^ new Number(Number.MAX_VALUE));
write(undefined ^ new Number(Number.MIN_VALUE));
write(undefined ^ new Number(Number.NaN));
write(undefined ^ new Number(Number.POSITIVE_INFINITY));
write(undefined ^ new Number(Number.NEGATIVE_INFINITY));
write(undefined ^ '');
write(undefined ^ 0xa);
write(undefined ^ 04);
write(undefined ^ 'hello');
write(undefined ^ 'hel' + 'lo');
write(undefined ^ String(''));
write(undefined ^ String('hello'));
write(undefined ^ String('h' + 'ello'));
write(undefined ^ new String(''));
write(undefined ^ new String('hello'));
write(undefined ^ new String('he' + 'llo'));
write(undefined ^ new Object());
write(undefined ^ new Object());
write(undefined ^ [1, 2, 3]);
write(undefined ^ [1 ,2 , 3]);
write(undefined ^ new Array(3));
write(undefined ^ Array(3));
write(undefined ^ new Array(1 ,2 ,3));
write(undefined ^ Array(1));
write(undefined ^ foo);
write(null ^ undefined);
write(null ^ null);
write(null ^ true);
write(null ^ false);
write(null ^ Boolean(true));
write(null ^ Boolean(false));
write(null ^ new Boolean(true));
write(null ^ new Boolean(false));
write(null ^ NaN);
write(null ^ +0);
write(null ^ -0);
write(null ^ 0);
write(null ^ 0.0);
write(null ^ -0.0);
write(null ^ +0.0);
write(null ^ 1);
write(null ^ 10);
write(null ^ 10.0);
write(null ^ 10.1);
write(null ^ -1);
write(null ^ -10);
write(null ^ -10.0);
write(null ^ -10.1);
write(null ^ Number.MAX_VALUE);
write(null ^ Number.MIN_VALUE);
write(null ^ Number.NaN);
write(null ^ Number.POSITIVE_INFINITY);
write(null ^ Number.NEGATIVE_INFINITY);
write(null ^ new Number(NaN));
write(null ^ new Number(+0));
write(null ^ new Number(-0));
write(null ^ new Number(0));
write(null ^ new Number(0.0));
write(null ^ new Number(-0.0));
write(null ^ new Number(+0.0));
write(null ^ new Number(1));
write(null ^ new Number(10));
write(null ^ new Number(10.0));
write(null ^ new Number(10.1));
write(null ^ new Number(-1));
write(null ^ new Number(-10));
write(null ^ new Number(-10.0));
write(null ^ new Number(-10.1));
write(null ^ new Number(Number.MAX_VALUE));
write(null ^ new Number(Number.MIN_VALUE));
write(null ^ new Number(Number.NaN));
write(null ^ new Number(Number.POSITIVE_INFINITY));
write(null ^ new Number(Number.NEGATIVE_INFINITY));
write(null ^ '');
write(null ^ 0xa);
write(null ^ 04);
write(null ^ 'hello');
write(null ^ 'hel' + 'lo');
write(null ^ String(''));
write(null ^ String('hello'));
write(null ^ String('h' + 'ello'));
write(null ^ new String(''));
write(null ^ new String('hello'));
write(null ^ new String('he' + 'llo'));
write(null ^ new Object());
write(null ^ new Object());
write(null ^ [1, 2, 3]);
write(null ^ [1 ,2 , 3]);
write(null ^ new Array(3));
write(null ^ Array(3));
write(null ^ new Array(1 ,2 ,3));
write(null ^ Array(1));
write(null ^ foo);
write(true ^ undefined);
write(true ^ null);
write(true ^ true);
write(true ^ false);
write(true ^ Boolean(true));
write(true ^ Boolean(false));
write(true ^ new Boolean(true));
write(true ^ new Boolean(false));
write(true ^ NaN);
write(true ^ +0);
write(true ^ -0);
write(true ^ 0);
write(true ^ 0.0);
write(true ^ -0.0);
write(true ^ +0.0);
write(true ^ 1);
write(true ^ 10);
write(true ^ 10.0);
write(true ^ 10.1);
write(true ^ -1);
write(true ^ -10);
write(true ^ -10.0);
write(true ^ -10.1);
write(true ^ Number.MAX_VALUE);
write(true ^ Number.MIN_VALUE);
write(true ^ Number.NaN);
write(true ^ Number.POSITIVE_INFINITY);
write(true ^ Number.NEGATIVE_INFINITY);
write(true ^ new Number(NaN));
write(true ^ new Number(+0));
write(true ^ new Number(-0));
write(true ^ new Number(0));
write(true ^ new Number(0.0));
write(true ^ new Number(-0.0));
write(true ^ new Number(+0.0));
write(true ^ new Number(1));
write(true ^ new Number(10));
write(true ^ new Number(10.0));
write(true ^ new Number(10.1));
write(true ^ new Number(-1));
write(true ^ new Number(-10));
write(true ^ new Number(-10.0));
write(true ^ new Number(-10.1));
write(true ^ new Number(Number.MAX_VALUE));
write(true ^ new Number(Number.MIN_VALUE));
write(true ^ new Number(Number.NaN));
write(true ^ new Number(Number.POSITIVE_INFINITY));
write(true ^ new Number(Number.NEGATIVE_INFINITY));
write(true ^ '');
write(true ^ 0xa);
write(true ^ 04);
write(true ^ 'hello');
write(true ^ 'hel' + 'lo');
write(true ^ String(''));
write(true ^ String('hello'));
write(true ^ String('h' + 'ello'));
write(true ^ new String(''));
write(true ^ new String('hello'));
write(true ^ new String('he' + 'llo'));
write(true ^ new Object());
write(true ^ new Object());
write(true ^ [1, 2, 3]);
write(true ^ [1 ,2 , 3]);
write(true ^ new Array(3));
write(true ^ Array(3));
write(true ^ new Array(1 ,2 ,3));
write(true ^ Array(1));
write(true ^ foo);
write(false ^ undefined);
write(false ^ null);
write(false ^ true);
write(false ^ false);
write(false ^ Boolean(true));
write(false ^ Boolean(false));
write(false ^ new Boolean(true));
write(false ^ new Boolean(false));
write(false ^ NaN);
write(false ^ +0);
write(false ^ -0);
write(false ^ 0);
write(false ^ 0.0);
write(false ^ -0.0);
write(false ^ +0.0);
write(false ^ 1);
write(false ^ 10);
write(false ^ 10.0);
write(false ^ 10.1);
write(false ^ -1);
write(false ^ -10);
write(false ^ -10.0);
write(false ^ -10.1);
write(false ^ Number.MAX_VALUE);
write(false ^ Number.MIN_VALUE);
write(false ^ Number.NaN);
write(false ^ Number.POSITIVE_INFINITY);
write(false ^ Number.NEGATIVE_INFINITY);
write(false ^ new Number(NaN));
write(false ^ new Number(+0));
write(false ^ new Number(-0));
write(false ^ new Number(0));
write(false ^ new Number(0.0));
write(false ^ new Number(-0.0));
write(false ^ new Number(+0.0));
write(false ^ new Number(1));
write(false ^ new Number(10));
write(false ^ new Number(10.0));
write(false ^ new Number(10.1));
write(false ^ new Number(-1));
write(false ^ new Number(-10));
write(false ^ new Number(-10.0));
write(false ^ new Number(-10.1));
write(false ^ new Number(Number.MAX_VALUE));
write(false ^ new Number(Number.MIN_VALUE));
write(false ^ new Number(Number.NaN));
write(false ^ new Number(Number.POSITIVE_INFINITY));
write(false ^ new Number(Number.NEGATIVE_INFINITY));
write(false ^ '');
write(false ^ 0xa);
write(false ^ 04);
write(false ^ 'hello');
write(false ^ 'hel' + 'lo');
write(false ^ String(''));
write(false ^ String('hello'));
write(false ^ String('h' + 'ello'));
write(false ^ new String(''));
write(false ^ new String('hello'));
write(false ^ new String('he' + 'llo'));
write(false ^ new Object());
write(false ^ new Object());
write(false ^ [1, 2, 3]);
write(false ^ [1 ,2 , 3]);
write(false ^ new Array(3));
write(false ^ Array(3));
write(false ^ new Array(1 ,2 ,3));
write(false ^ Array(1));
write(false ^ foo);
write(Boolean(true) ^ undefined);
write(Boolean(true) ^ null);
write(Boolean(true) ^ true);
write(Boolean(true) ^ false);
write(Boolean(true) ^ Boolean(true));
write(Boolean(true) ^ Boolean(false));
write(Boolean(true) ^ new Boolean(true));
write(Boolean(true) ^ new Boolean(false));
write(Boolean(true) ^ NaN);
write(Boolean(true) ^ +0);
write(Boolean(true) ^ -0);
write(Boolean(true) ^ 0);
write(Boolean(true) ^ 0.0);
write(Boolean(true) ^ -0.0);
write(Boolean(true) ^ +0.0);
write(Boolean(true) ^ 1);
write(Boolean(true) ^ 10);
write(Boolean(true) ^ 10.0);
write(Boolean(true) ^ 10.1);
write(Boolean(true) ^ -1);
write(Boolean(true) ^ -10);
write(Boolean(true) ^ -10.0);
write(Boolean(true) ^ -10.1);
write(Boolean(true) ^ Number.MAX_VALUE);
write(Boolean(true) ^ Number.MIN_VALUE);
write(Boolean(true) ^ Number.NaN);
write(Boolean(true) ^ Number.POSITIVE_INFINITY);
write(Boolean(true) ^ Number.NEGATIVE_INFINITY);
write(Boolean(true) ^ new Number(NaN));
write(Boolean(true) ^ new Number(+0));
write(Boolean(true) ^ new Number(-0));
write(Boolean(true) ^ new Number(0));
write(Boolean(true) ^ new Number(0.0));
write(Boolean(true) ^ new Number(-0.0));
write(Boolean(true) ^ new Number(+0.0));
write(Boolean(true) ^ new Number(1));
write(Boolean(true) ^ new Number(10));
write(Boolean(true) ^ new Number(10.0));
write(Boolean(true) ^ new Number(10.1));
write(Boolean(true) ^ new Number(-1));
write(Boolean(true) ^ new Number(-10));
write(Boolean(true) ^ new Number(-10.0));
write(Boolean(true) ^ new Number(-10.1));
write(Boolean(true) ^ new Number(Number.MAX_VALUE));
write(Boolean(true) ^ new Number(Number.MIN_VALUE));
write(Boolean(true) ^ new Number(Number.NaN));
write(Boolean(true) ^ new Number(Number.POSITIVE_INFINITY));
write(Boolean(true) ^ new Number(Number.NEGATIVE_INFINITY));
write(Boolean(true) ^ '');
write(Boolean(true) ^ 0xa);
write(Boolean(true) ^ 04);
write(Boolean(true) ^ 'hello');
write(Boolean(true) ^ 'hel' + 'lo');
write(Boolean(true) ^ String(''));
write(Boolean(true) ^ String('hello'));
write(Boolean(true) ^ String('h' + 'ello'));
write(Boolean(true) ^ new String(''));
write(Boolean(true) ^ new String('hello'));
write(Boolean(true) ^ new String('he' + 'llo'));
write(Boolean(true) ^ new Object());
write(Boolean(true) ^ new Object());
write(Boolean(true) ^ [1, 2, 3]);
write(Boolean(true) ^ [1 ,2 , 3]);
write(Boolean(true) ^ new Array(3));
write(Boolean(true) ^ Array(3));
write(Boolean(true) ^ new Array(1 ,2 ,3));
write(Boolean(true) ^ Array(1));
write(Boolean(true) ^ foo);
write(Boolean(false) ^ undefined);
write(Boolean(false) ^ null);
write(Boolean(false) ^ true);
write(Boolean(false) ^ false);
write(Boolean(false) ^ Boolean(true));
write(Boolean(false) ^ Boolean(false));
write(Boolean(false) ^ new Boolean(true));
write(Boolean(false) ^ new Boolean(false));
write(Boolean(false) ^ NaN);
write(Boolean(false) ^ +0);
write(Boolean(false) ^ -0);
write(Boolean(false) ^ 0);
write(Boolean(false) ^ 0.0);
write(Boolean(false) ^ -0.0);
write(Boolean(false) ^ +0.0);
write(Boolean(false) ^ 1);
write(Boolean(false) ^ 10);
write(Boolean(false) ^ 10.0);
write(Boolean(false) ^ 10.1);
write(Boolean(false) ^ -1);
write(Boolean(false) ^ -10);
write(Boolean(false) ^ -10.0);
write(Boolean(false) ^ -10.1);
write(Boolean(false) ^ Number.MAX_VALUE);
write(Boolean(false) ^ Number.MIN_VALUE);
write(Boolean(false) ^ Number.NaN);
write(Boolean(false) ^ Number.POSITIVE_INFINITY);
write(Boolean(false) ^ Number.NEGATIVE_INFINITY);
write(Boolean(false) ^ new Number(NaN));
write(Boolean(false) ^ new Number(+0));
write(Boolean(false) ^ new Number(-0));
write(Boolean(false) ^ new Number(0));
write(Boolean(false) ^ new Number(0.0));
write(Boolean(false) ^ new Number(-0.0));
write(Boolean(false) ^ new Number(+0.0));
write(Boolean(false) ^ new Number(1));
write(Boolean(false) ^ new Number(10));
write(Boolean(false) ^ new Number(10.0));
write(Boolean(false) ^ new Number(10.1));
write(Boolean(false) ^ new Number(-1));
write(Boolean(false) ^ new Number(-10));
write(Boolean(false) ^ new Number(-10.0));
write(Boolean(false) ^ new Number(-10.1));
write(Boolean(false) ^ new Number(Number.MAX_VALUE));
write(Boolean(false) ^ new Number(Number.MIN_VALUE));
write(Boolean(false) ^ new Number(Number.NaN));
write(Boolean(false) ^ new Number(Number.POSITIVE_INFINITY));
write(Boolean(false) ^ new Number(Number.NEGATIVE_INFINITY));
write(Boolean(false) ^ '');
write(Boolean(false) ^ 0xa);
write(Boolean(false) ^ 04);
write(Boolean(false) ^ 'hello');
write(Boolean(false) ^ 'hel' + 'lo');
write(Boolean(false) ^ String(''));
write(Boolean(false) ^ String('hello'));
write(Boolean(false) ^ String('h' + 'ello'));
write(Boolean(false) ^ new String(''));
write(Boolean(false) ^ new String('hello'));
write(Boolean(false) ^ new String('he' + 'llo'));
write(Boolean(false) ^ new Object());
write(Boolean(false) ^ new Object());
write(Boolean(false) ^ [1, 2, 3]);
write(Boolean(false) ^ [1 ,2 , 3]);
write(Boolean(false) ^ new Array(3));
write(Boolean(false) ^ Array(3));
write(Boolean(false) ^ new Array(1 ,2 ,3));
write(Boolean(false) ^ Array(1));
write(Boolean(false) ^ foo);
write(new Boolean(true) ^ undefined);
write(new Boolean(true) ^ null);
write(new Boolean(true) ^ true);
write(new Boolean(true) ^ false);
write(new Boolean(true) ^ Boolean(true));
write(new Boolean(true) ^ Boolean(false));
write(new Boolean(true) ^ new Boolean(true));
write(new Boolean(true) ^ new Boolean(false));
write(new Boolean(true) ^ NaN);
write(new Boolean(true) ^ +0);
write(new Boolean(true) ^ -0);
write(new Boolean(true) ^ 0);
write(new Boolean(true) ^ 0.0);
write(new Boolean(true) ^ -0.0);
write(new Boolean(true) ^ +0.0);
write(new Boolean(true) ^ 1);
write(new Boolean(true) ^ 10);
write(new Boolean(true) ^ 10.0);
write(new Boolean(true) ^ 10.1);
write(new Boolean(true) ^ -1);
write(new Boolean(true) ^ -10);
write(new Boolean(true) ^ -10.0);
write(new Boolean(true) ^ -10.1);
write(new Boolean(true) ^ Number.MAX_VALUE);
write(new Boolean(true) ^ Number.MIN_VALUE);
write(new Boolean(true) ^ Number.NaN);
write(new Boolean(true) ^ Number.POSITIVE_INFINITY);
write(new Boolean(true) ^ Number.NEGATIVE_INFINITY);
write(new Boolean(true) ^ new Number(NaN));
write(new Boolean(true) ^ new Number(+0));
write(new Boolean(true) ^ new Number(-0));
write(new Boolean(true) ^ new Number(0));
write(new Boolean(true) ^ new Number(0.0));
write(new Boolean(true) ^ new Number(-0.0));
write(new Boolean(true) ^ new Number(+0.0));
write(new Boolean(true) ^ new Number(1));
write(new Boolean(true) ^ new Number(10));
write(new Boolean(true) ^ new Number(10.0));
write(new Boolean(true) ^ new Number(10.1));
write(new Boolean(true) ^ new Number(-1));
write(new Boolean(true) ^ new Number(-10));
write(new Boolean(true) ^ new Number(-10.0));
write(new Boolean(true) ^ new Number(-10.1));
write(new Boolean(true) ^ new Number(Number.MAX_VALUE));
write(new Boolean(true) ^ new Number(Number.MIN_VALUE));
write(new Boolean(true) ^ new Number(Number.NaN));
write(new Boolean(true) ^ new Number(Number.POSITIVE_INFINITY));
write(new Boolean(true) ^ new Number(Number.NEGATIVE_INFINITY));
write(new Boolean(true) ^ '');
write(new Boolean(true) ^ 0xa);
write(new Boolean(true) ^ 04);
write(new Boolean(true) ^ 'hello');
write(new Boolean(true) ^ 'hel' + 'lo');
write(new Boolean(true) ^ String(''));
write(new Boolean(true) ^ String('hello'));
write(new Boolean(true) ^ String('h' + 'ello'));
write(new Boolean(true) ^ new String(''));
write(new Boolean(true) ^ new String('hello'));
write(new Boolean(true) ^ new String('he' + 'llo'));
write(new Boolean(true) ^ new Object());
write(new Boolean(true) ^ new Object());
write(new Boolean(true) ^ [1, 2, 3]);
write(new Boolean(true) ^ [1 ,2 , 3]);
write(new Boolean(true) ^ new Array(3));
write(new Boolean(true) ^ Array(3));
write(new Boolean(true) ^ new Array(1 ,2 ,3));
write(new Boolean(true) ^ Array(1));
write(new Boolean(true) ^ foo);
write(new Boolean(false) ^ undefined);
write(new Boolean(false) ^ null);
write(new Boolean(false) ^ true);
write(new Boolean(false) ^ false);
write(new Boolean(false) ^ Boolean(true));
write(new Boolean(false) ^ Boolean(false));
write(new Boolean(false) ^ new Boolean(true));
write(new Boolean(false) ^ new Boolean(false));
write(new Boolean(false) ^ NaN);
write(new Boolean(false) ^ +0);
write(new Boolean(false) ^ -0);
write(new Boolean(false) ^ 0);
write(new Boolean(false) ^ 0.0);
write(new Boolean(false) ^ -0.0);
write(new Boolean(false) ^ +0.0);
write(new Boolean(false) ^ 1);
write(new Boolean(false) ^ 10);
write(new Boolean(false) ^ 10.0);
write(new Boolean(false) ^ 10.1);
write(new Boolean(false) ^ -1);
write(new Boolean(false) ^ -10);
write(new Boolean(false) ^ -10.0);
write(new Boolean(false) ^ -10.1);
write(new Boolean(false) ^ Number.MAX_VALUE);
write(new Boolean(false) ^ Number.MIN_VALUE);
write(new Boolean(false) ^ Number.NaN);
write(new Boolean(false) ^ Number.POSITIVE_INFINITY);
write(new Boolean(false) ^ Number.NEGATIVE_INFINITY);
write(new Boolean(false) ^ new Number(NaN));
write(new Boolean(false) ^ new Number(+0));
write(new Boolean(false) ^ new Number(-0));
write(new Boolean(false) ^ new Number(0));
write(new Boolean(false) ^ new Number(0.0));
write(new Boolean(false) ^ new Number(-0.0));
write(new Boolean(false) ^ new Number(+0.0));
write(new Boolean(false) ^ new Number(1));
write(new Boolean(false) ^ new Number(10));
write(new Boolean(false) ^ new Number(10.0));
write(new Boolean(false) ^ new Number(10.1));
write(new Boolean(false) ^ new Number(-1));
write(new Boolean(false) ^ new Number(-10));
write(new Boolean(false) ^ new Number(-10.0));
write(new Boolean(false) ^ new Number(-10.1));
write(new Boolean(false) ^ new Number(Number.MAX_VALUE));
write(new Boolean(false) ^ new Number(Number.MIN_VALUE));
write(new Boolean(false) ^ new Number(Number.NaN));
write(new Boolean(false) ^ new Number(Number.POSITIVE_INFINITY));
write(new Boolean(false) ^ new Number(Number.NEGATIVE_INFINITY));
write(new Boolean(false) ^ '');
write(new Boolean(false) ^ 0xa);
write(new Boolean(false) ^ 04);
write(new Boolean(false) ^ 'hello');
write(new Boolean(false) ^ 'hel' + 'lo');
write(new Boolean(false) ^ String(''));
write(new Boolean(false) ^ String('hello'));
write(new Boolean(false) ^ String('h' + 'ello'));
write(new Boolean(false) ^ new String(''));
write(new Boolean(false) ^ new String('hello'));
write(new Boolean(false) ^ new String('he' + 'llo'));
write(new Boolean(false) ^ new Object());
write(new Boolean(false) ^ new Object());
write(new Boolean(false) ^ [1, 2, 3]);
write(new Boolean(false) ^ [1 ,2 , 3]);
write(new Boolean(false) ^ new Array(3));
write(new Boolean(false) ^ Array(3));
write(new Boolean(false) ^ new Array(1 ,2 ,3));
write(new Boolean(false) ^ Array(1));
write(new Boolean(false) ^ foo);
write(NaN ^ undefined);
write(NaN ^ null);
write(NaN ^ true);
write(NaN ^ false);
write(NaN ^ Boolean(true));
write(NaN ^ Boolean(false));
write(NaN ^ new Boolean(true));
write(NaN ^ new Boolean(false));
write(NaN ^ NaN);
write(NaN ^ +0);
write(NaN ^ -0);
write(NaN ^ 0);
write(NaN ^ 0.0);
write(NaN ^ -0.0);
write(NaN ^ +0.0);
write(NaN ^ 1);
write(NaN ^ 10);
write(NaN ^ 10.0);
write(NaN ^ 10.1);
write(NaN ^ -1);
write(NaN ^ -10);
write(NaN ^ -10.0);
write(NaN ^ -10.1);
write(NaN ^ Number.MAX_VALUE);
write(NaN ^ Number.MIN_VALUE);
write(NaN ^ Number.NaN);
write(NaN ^ Number.POSITIVE_INFINITY);
write(NaN ^ Number.NEGATIVE_INFINITY);
write(NaN ^ new Number(NaN));
write(NaN ^ new Number(+0));
write(NaN ^ new Number(-0));
write(NaN ^ new Number(0));
write(NaN ^ new Number(0.0));
write(NaN ^ new Number(-0.0));
write(NaN ^ new Number(+0.0));
write(NaN ^ new Number(1));
write(NaN ^ new Number(10));
write(NaN ^ new Number(10.0));
write(NaN ^ new Number(10.1));
write(NaN ^ new Number(-1));
write(NaN ^ new Number(-10));
write(NaN ^ new Number(-10.0));
write(NaN ^ new Number(-10.1));
write(NaN ^ new Number(Number.MAX_VALUE));
write(NaN ^ new Number(Number.MIN_VALUE));
write(NaN ^ new Number(Number.NaN));
write(NaN ^ new Number(Number.POSITIVE_INFINITY));
write(NaN ^ new Number(Number.NEGATIVE_INFINITY));
write(NaN ^ '');
write(NaN ^ 0xa);
write(NaN ^ 04);
write(NaN ^ 'hello');
write(NaN ^ 'hel' + 'lo');
write(NaN ^ String(''));
write(NaN ^ String('hello'));
write(NaN ^ String('h' + 'ello'));
write(NaN ^ new String(''));
write(NaN ^ new String('hello'));
write(NaN ^ new String('he' + 'llo'));
write(NaN ^ new Object());
write(NaN ^ new Object());
write(NaN ^ [1, 2, 3]);
write(NaN ^ [1 ,2 , 3]);
write(NaN ^ new Array(3));
write(NaN ^ Array(3));
write(NaN ^ new Array(1 ,2 ,3));
write(NaN ^ Array(1));
write(NaN ^ foo);
write(+0 ^ undefined);
write(+0 ^ null);
write(+0 ^ true);
write(+0 ^ false);
write(+0 ^ Boolean(true));
write(+0 ^ Boolean(false));
write(+0 ^ new Boolean(true));
write(+0 ^ new Boolean(false));
write(+0 ^ NaN);
write(+0 ^ +0);
write(+0 ^ -0);
write(+0 ^ 0);
write(+0 ^ 0.0);
write(+0 ^ -0.0);
write(+0 ^ +0.0);
write(+0 ^ 1);
write(+0 ^ 10);
write(+0 ^ 10.0);
write(+0 ^ 10.1);
write(+0 ^ -1);
write(+0 ^ -10);
write(+0 ^ -10.0);
write(+0 ^ -10.1);
write(+0 ^ Number.MAX_VALUE);
write(+0 ^ Number.MIN_VALUE);
write(+0 ^ Number.NaN);
write(+0 ^ Number.POSITIVE_INFINITY);
write(+0 ^ Number.NEGATIVE_INFINITY);
write(+0 ^ new Number(NaN));
write(+0 ^ new Number(+0));
write(+0 ^ new Number(-0));
write(+0 ^ new Number(0));
write(+0 ^ new Number(0.0));
write(+0 ^ new Number(-0.0));
write(+0 ^ new Number(+0.0));
write(+0 ^ new Number(1));
write(+0 ^ new Number(10));
write(+0 ^ new Number(10.0));
write(+0 ^ new Number(10.1));
write(+0 ^ new Number(-1));
write(+0 ^ new Number(-10));
write(+0 ^ new Number(-10.0));
write(+0 ^ new Number(-10.1));
write(+0 ^ new Number(Number.MAX_VALUE));
write(+0 ^ new Number(Number.MIN_VALUE));
write(+0 ^ new Number(Number.NaN));
write(+0 ^ new Number(Number.POSITIVE_INFINITY));
write(+0 ^ new Number(Number.NEGATIVE_INFINITY));
write(+0 ^ '');
write(+0 ^ 0xa);
write(+0 ^ 04);
write(+0 ^ 'hello');
write(+0 ^ 'hel' + 'lo');
write(+0 ^ String(''));
write(+0 ^ String('hello'));
write(+0 ^ String('h' + 'ello'));
write(+0 ^ new String(''));
write(+0 ^ new String('hello'));
write(+0 ^ new String('he' + 'llo'));
write(+0 ^ new Object());
write(+0 ^ new Object());
write(+0 ^ [1, 2, 3]);
write(+0 ^ [1 ,2 , 3]);
write(+0 ^ new Array(3));
write(+0 ^ Array(3));
write(+0 ^ new Array(1 ,2 ,3));
write(+0 ^ Array(1));
write(+0 ^ foo);
write(-0 ^ undefined);
write(-0 ^ null);
write(-0 ^ true);
write(-0 ^ false);
write(-0 ^ Boolean(true));
write(-0 ^ Boolean(false));
write(-0 ^ new Boolean(true));
write(-0 ^ new Boolean(false));
write(-0 ^ NaN);
write(-0 ^ +0);
write(-0 ^ -0);
write(-0 ^ 0);
write(-0 ^ 0.0);
write(-0 ^ -0.0);
write(-0 ^ +0.0);
write(-0 ^ 1);
write(-0 ^ 10);
write(-0 ^ 10.0);
write(-0 ^ 10.1);
write(-0 ^ -1);
write(-0 ^ -10);
write(-0 ^ -10.0);
write(-0 ^ -10.1);
write(-0 ^ Number.MAX_VALUE);
write(-0 ^ Number.MIN_VALUE);
write(-0 ^ Number.NaN);
write(-0 ^ Number.POSITIVE_INFINITY);
write(-0 ^ Number.NEGATIVE_INFINITY);
write(-0 ^ new Number(NaN));
write(-0 ^ new Number(+0));
write(-0 ^ new Number(-0));
write(-0 ^ new Number(0));
write(-0 ^ new Number(0.0));
write(-0 ^ new Number(-0.0));
write(-0 ^ new Number(+0.0));
write(-0 ^ new Number(1));
write(-0 ^ new Number(10));
write(-0 ^ new Number(10.0));
write(-0 ^ new Number(10.1));
write(-0 ^ new Number(-1));
write(-0 ^ new Number(-10));
write(-0 ^ new Number(-10.0));
write(-0 ^ new Number(-10.1));
write(-0 ^ new Number(Number.MAX_VALUE));
write(-0 ^ new Number(Number.MIN_VALUE));
write(-0 ^ new Number(Number.NaN));
write(-0 ^ new Number(Number.POSITIVE_INFINITY));
write(-0 ^ new Number(Number.NEGATIVE_INFINITY));
write(-0 ^ '');
write(-0 ^ 0xa);
write(-0 ^ 04);
write(-0 ^ 'hello');
write(-0 ^ 'hel' + 'lo');
write(-0 ^ String(''));
write(-0 ^ String('hello'));
write(-0 ^ String('h' + 'ello'));
write(-0 ^ new String(''));
write(-0 ^ new String('hello'));
write(-0 ^ new String('he' + 'llo'));
write(-0 ^ new Object());
write(-0 ^ new Object());
write(-0 ^ [1, 2, 3]);
write(-0 ^ [1 ,2 , 3]);
write(-0 ^ new Array(3));
write(-0 ^ Array(3));
write(-0 ^ new Array(1 ,2 ,3));
write(-0 ^ Array(1));
write(-0 ^ foo);
write(0 ^ undefined);
write(0 ^ null);
write(0 ^ true);
write(0 ^ false);
write(0 ^ Boolean(true));
write(0 ^ Boolean(false));
write(0 ^ new Boolean(true));
write(0 ^ new Boolean(false));
write(0 ^ NaN);
write(0 ^ +0);
write(0 ^ -0);
write(0 ^ 0);
write(0 ^ 0.0);
write(0 ^ -0.0);
write(0 ^ +0.0);
write(0 ^ 1);
write(0 ^ 10);
write(0 ^ 10.0);
write(0 ^ 10.1);
write(0 ^ -1);
write(0 ^ -10);
write(0 ^ -10.0);
write(0 ^ -10.1);
write(0 ^ Number.MAX_VALUE);
write(0 ^ Number.MIN_VALUE);
write(0 ^ Number.NaN);
write(0 ^ Number.POSITIVE_INFINITY);
write(0 ^ Number.NEGATIVE_INFINITY);
write(0 ^ new Number(NaN));
write(0 ^ new Number(+0));
write(0 ^ new Number(-0));
write(0 ^ new Number(0));
write(0 ^ new Number(0.0));
write(0 ^ new Number(-0.0));
write(0 ^ new Number(+0.0));
write(0 ^ new Number(1));
write(0 ^ new Number(10));
write(0 ^ new Number(10.0));
write(0 ^ new Number(10.1));
write(0 ^ new Number(-1));
write(0 ^ new Number(-10));
write(0 ^ new Number(-10.0));
write(0 ^ new Number(-10.1));
write(0 ^ new Number(Number.MAX_VALUE));
write(0 ^ new Number(Number.MIN_VALUE));
write(0 ^ new Number(Number.NaN));
write(0 ^ new Number(Number.POSITIVE_INFINITY));
write(0 ^ new Number(Number.NEGATIVE_INFINITY));
write(0 ^ '');
write(0 ^ 0xa);
write(0 ^ 04);
write(0 ^ 'hello');
write(0 ^ 'hel' + 'lo');
write(0 ^ String(''));
write(0 ^ String('hello'));
write(0 ^ String('h' + 'ello'));
write(0 ^ new String(''));
write(0 ^ new String('hello'));
write(0 ^ new String('he' + 'llo'));
write(0 ^ new Object());
write(0 ^ new Object());
write(0 ^ [1, 2, 3]);
write(0 ^ [1 ,2 , 3]);
write(0 ^ new Array(3));
write(0 ^ Array(3));
write(0 ^ new Array(1 ,2 ,3));
write(0 ^ Array(1));
write(0 ^ foo);
write(0.0 ^ undefined);
write(0.0 ^ null);
write(0.0 ^ true);
write(0.0 ^ false);
write(0.0 ^ Boolean(true));
write(0.0 ^ Boolean(false));
write(0.0 ^ new Boolean(true));
write(0.0 ^ new Boolean(false));
write(0.0 ^ NaN);
write(0.0 ^ +0);
write(0.0 ^ -0);
write(0.0 ^ 0);
write(0.0 ^ 0.0);
write(0.0 ^ -0.0);
write(0.0 ^ +0.0);
write(0.0 ^ 1);
write(0.0 ^ 10);
write(0.0 ^ 10.0);
write(0.0 ^ 10.1);
write(0.0 ^ -1);
write(0.0 ^ -10);
write(0.0 ^ -10.0);
write(0.0 ^ -10.1);
write(0.0 ^ Number.MAX_VALUE);
write(0.0 ^ Number.MIN_VALUE);
write(0.0 ^ Number.NaN);
write(0.0 ^ Number.POSITIVE_INFINITY);
write(0.0 ^ Number.NEGATIVE_INFINITY);
write(0.0 ^ new Number(NaN));
write(0.0 ^ new Number(+0));
write(0.0 ^ new Number(-0));
write(0.0 ^ new Number(0));
write(0.0 ^ new Number(0.0));
write(0.0 ^ new Number(-0.0));
write(0.0 ^ new Number(+0.0));
write(0.0 ^ new Number(1));
write(0.0 ^ new Number(10));
write(0.0 ^ new Number(10.0));
write(0.0 ^ new Number(10.1));
write(0.0 ^ new Number(-1));
write(0.0 ^ new Number(-10));
write(0.0 ^ new Number(-10.0));
write(0.0 ^ new Number(-10.1));
write(0.0 ^ new Number(Number.MAX_VALUE));
write(0.0 ^ new Number(Number.MIN_VALUE));
write(0.0 ^ new Number(Number.NaN));
write(0.0 ^ new Number(Number.POSITIVE_INFINITY));
write(0.0 ^ new Number(Number.NEGATIVE_INFINITY));
write(0.0 ^ '');
write(0.0 ^ 0xa);
write(0.0 ^ 04);
write(0.0 ^ 'hello');
write(0.0 ^ 'hel' + 'lo');
write(0.0 ^ String(''));
write(0.0 ^ String('hello'));
write(0.0 ^ String('h' + 'ello'));
write(0.0 ^ new String(''));
write(0.0 ^ new String('hello'));
write(0.0 ^ new String('he' + 'llo'));
write(0.0 ^ new Object());
write(0.0 ^ new Object());
write(0.0 ^ [1, 2, 3]);
write(0.0 ^ [1 ,2 , 3]);
write(0.0 ^ new Array(3));
write(0.0 ^ Array(3));
write(0.0 ^ new Array(1 ,2 ,3));
write(0.0 ^ Array(1));
write(0.0 ^ foo);
write(-0.0 ^ undefined);
write(-0.0 ^ null);
write(-0.0 ^ true);
write(-0.0 ^ false);
write(-0.0 ^ Boolean(true));
write(-0.0 ^ Boolean(false));
write(-0.0 ^ new Boolean(true));
write(-0.0 ^ new Boolean(false));
write(-0.0 ^ NaN);
write(-0.0 ^ +0);
write(-0.0 ^ -0);
write(-0.0 ^ 0);
write(-0.0 ^ 0.0);
write(-0.0 ^ -0.0);
write(-0.0 ^ +0.0);
write(-0.0 ^ 1);
write(-0.0 ^ 10);
write(-0.0 ^ 10.0);
write(-0.0 ^ 10.1);
write(-0.0 ^ -1);
write(-0.0 ^ -10);
write(-0.0 ^ -10.0);
write(-0.0 ^ -10.1);
write(-0.0 ^ Number.MAX_VALUE);
write(-0.0 ^ Number.MIN_VALUE);
write(-0.0 ^ Number.NaN);
write(-0.0 ^ Number.POSITIVE_INFINITY);
write(-0.0 ^ Number.NEGATIVE_INFINITY);
write(-0.0 ^ new Number(NaN));
write(-0.0 ^ new Number(+0));
write(-0.0 ^ new Number(-0));
write(-0.0 ^ new Number(0));
write(-0.0 ^ new Number(0.0));
write(-0.0 ^ new Number(-0.0));
write(-0.0 ^ new Number(+0.0));
write(-0.0 ^ new Number(1));
write(-0.0 ^ new Number(10));
write(-0.0 ^ new Number(10.0));
write(-0.0 ^ new Number(10.1));
write(-0.0 ^ new Number(-1));
write(-0.0 ^ new Number(-10));
write(-0.0 ^ new Number(-10.0));
write(-0.0 ^ new Number(-10.1));
write(-0.0 ^ new Number(Number.MAX_VALUE));
write(-0.0 ^ new Number(Number.MIN_VALUE));
write(-0.0 ^ new Number(Number.NaN));
write(-0.0 ^ new Number(Number.POSITIVE_INFINITY));
write(-0.0 ^ new Number(Number.NEGATIVE_INFINITY));
write(-0.0 ^ '');
write(-0.0 ^ 0xa);
write(-0.0 ^ 04);
write(-0.0 ^ 'hello');
write(-0.0 ^ 'hel' + 'lo');
write(-0.0 ^ String(''));
write(-0.0 ^ String('hello'));
write(-0.0 ^ String('h' + 'ello'));
write(-0.0 ^ new String(''));
write(-0.0 ^ new String('hello'));
write(-0.0 ^ new String('he' + 'llo'));
write(-0.0 ^ new Object());
write(-0.0 ^ new Object());
write(-0.0 ^ [1, 2, 3]);
write(-0.0 ^ [1 ,2 , 3]);
write(-0.0 ^ new Array(3));
write(-0.0 ^ Array(3));
write(-0.0 ^ new Array(1 ,2 ,3));
write(-0.0 ^ Array(1));
write(-0.0 ^ foo);
write(+0.0 ^ undefined);
write(+0.0 ^ null);
write(+0.0 ^ true);
write(+0.0 ^ false);
write(+0.0 ^ Boolean(true));
write(+0.0 ^ Boolean(false));
write(+0.0 ^ new Boolean(true));
write(+0.0 ^ new Boolean(false));
write(+0.0 ^ NaN);
write(+0.0 ^ +0);
write(+0.0 ^ -0);
write(+0.0 ^ 0);
write(+0.0 ^ 0.0);
write(+0.0 ^ -0.0);
write(+0.0 ^ +0.0);
write(+0.0 ^ 1);
write(+0.0 ^ 10);
write(+0.0 ^ 10.0);
write(+0.0 ^ 10.1);
write(+0.0 ^ -1);
write(+0.0 ^ -10);
write(+0.0 ^ -10.0);
write(+0.0 ^ -10.1);
write(+0.0 ^ Number.MAX_VALUE);
write(+0.0 ^ Number.MIN_VALUE);
write(+0.0 ^ Number.NaN);
write(+0.0 ^ Number.POSITIVE_INFINITY);
write(+0.0 ^ Number.NEGATIVE_INFINITY);
write(+0.0 ^ new Number(NaN));
write(+0.0 ^ new Number(+0));
write(+0.0 ^ new Number(-0));
write(+0.0 ^ new Number(0));
write(+0.0 ^ new Number(0.0));
write(+0.0 ^ new Number(-0.0));
write(+0.0 ^ new Number(+0.0));
write(+0.0 ^ new Number(1));
write(+0.0 ^ new Number(10));
write(+0.0 ^ new Number(10.0));
write(+0.0 ^ new Number(10.1));
write(+0.0 ^ new Number(-1));
write(+0.0 ^ new Number(-10));
write(+0.0 ^ new Number(-10.0));
write(+0.0 ^ new Number(-10.1));
write(+0.0 ^ new Number(Number.MAX_VALUE));
write(+0.0 ^ new Number(Number.MIN_VALUE));
write(+0.0 ^ new Number(Number.NaN));
write(+0.0 ^ new Number(Number.POSITIVE_INFINITY));
write(+0.0 ^ new Number(Number.NEGATIVE_INFINITY));
